The Domain Name System (DNS) is a hierarchical distributed naming system for computers, services, or any resource connected the Internet or a private network. A Domain Name Service translates queries for domain names (e.g., yourdomain.com) into IP addresses for the purpose of locating resources worldwide. Whereas domain names are generally understandable and easily remembered by humans, IP addresses are less memorable for humans. For example, the domain name www.example.com translates to the addresses 192.0.43.10 (Internet Protocol version 4 (IPv4)) and 2620:0:2d0:200::10 (Internet Protcol version 6 (IPv6)). The DNS makes it possible to assign domain names to groups of network resources in a meaningful way, and independent of the resources' physical locations.
The DNS implements a distributed, hierarchical, and redundant database for information associated with Internet domain names and IP addresses. In these domain servers, different record types are used. Two of these record types are an address record (A or AAAA records) and a canonical name record (CNAME record). An A record is most commonly used to map hostnames (i.e., domain names associated with at least one IP address) with the IP address of the host. Thus, given a hostname, an A record will return an IP address. A CNAME record is an alias of a first domain name for a second domain name. Given the first domain name, a CNAME record will return the second domain name. The second domain name can then be used to look up a further domain name (if another CNAME record exists as an alias for the further domain name) or an IP address (if an A record exists for the second domain name). It should be understood that other record types exist as well. For instance, a delegation name record (DNAME record) is similar to a CNAME record, but is an alias for a domain name and all of its subdomain names.
A simple example of a set of DNS records is illustrated in FIG. 1. When a lookup for “foo.example.com” is performed, the DNS resolver will encounter the CNAME record with a value of “bar.example.com.” The resolver will then restart the lookup using “bar.example.com” and find the A record with a value of “192.0.2.23.” Thus, the resolver will return the IP address 192.0.2.23.
DNS issues arise in the context of cloud hosted services. For instance, cloud applications are generally distributed across multiple locations to improve response times and resiliency in the case of failure. From the application's perspective, it does not automatically know where it is distributed, and where the closest name server is. It is frequently the case that an enterprise is unwittingly resolving all DNS queries on a name server thousands of miles away, adding precious seconds to the query latency. This can drastically affect the enterprise's bottom line. For instance, a study by Amazon found that every 100 ms of latency costs it 1% in sales. Similarly, Google reports that an extra half-second in search page generation time reduces traffic by 20%.